package controller

import (
	"github.com/kataras/iris/v12"
)

// Handlers 路由中间件
func Handlers(app *iris.Application) {
	app.Get("/handlers", before, mainHandler, after)
}

// 全局注册
// 或者使用  `UseGlobal`  去注册一个中间件，用于在所有子域名中使用
// app.Use(before)
// 注册  "after" ，在所有路由的处理程序之后调用
// app.Done(after)

func before(ctx iris.Context) {
	shareInformation := "this is a sharable information between handlers"

	requestPath := ctx.Path()
	println("Before the mainHandler: " + requestPath)

	ctx.Values().Set("info", shareInformation)
	ctx.Next() // 执行下一个处理器。
}

func after(ctx iris.Context) {
	println("After the mainHandler")
}

func mainHandler(ctx iris.Context) {
	println("Inside mainHandler")

	// 获取 "before" 处理器中的设置的 "info" 值。
	info := ctx.Values().GetString("info")

	// 响应客户端
	_, _ = ctx.JSON(iris.Map{"message": "Hello Iris!", "info": info})

	ctx.Next() // execute the "after".
}
